package interpreteur.action;

import interpreteur.*;

public class TantQueEtSi extends Foncteur {

    private final Foncteur pPredicat;
    private final Foncteur pActionPredicat;
    private final Foncteur pActionBoucle;
    private final Foncteur pSiAlorsAction;

    public TantQueEtSi(Foncteur pPredicat, Foncteur pActionPredicat, Foncteur pAction, Foncteur pActionBoucle) {
        this.pPredicat = pPredicat;
        this.pActionPredicat = pActionPredicat;
        this.pSiAlorsAction = new Si(pActionPredicat, pAction, new AucuneAction());
        this.pActionBoucle = pActionBoucle;


    }

    @Override
    public Result eval() {
        while (((Result) pPredicat.eval()).booleanResult) {
            pSiAlorsAction.eval();
            pActionBoucle.eval();
        }
        return Result.NULL;
    }
}






